A problem in wireless communication networks, and particularly with a mesh network, is the ability to efficiently distribute data between peers in the network. For example, some subset of the peers in a network may have data, and some other subset of peers in the network may want to get that data. Existing solutions to obtain data include having a centralized server that is queried to distribute that data, or broadcasting the request on the network and having all those peers that are hosting that data respond. The former is not a scalable solution and the latter creates a large amount of network traffic, both of which are not desirable.
Ordinarily, a peer that needs data might broadcast a request for that data to all its other peers to find a peer that is hosting that data. This is not a good solution because if all N peers respond, that may lead to a large increase of network traffic, i.e. a single request could receive N−1 responses. The more peers there are, the more responses are generated, which results in a scalability problem. Similarly, if N−1 peers want a particular data item and only one peer hosts that data, the N−1 requests could generate on the order of N2 responses throughout the network. In other words, if there were 100 peers that wanted data from only one host, there could be upwards of five thousand messages exchanged, in the extreme case. Obviously, having more peers in the network results in an exponential increase in messaging.
When a large number of the network entities involved in a data request are peers, it is desirable to load balance across all peers that can provide that data. When providing the data is an expensive operation (e.g. certificate exchange to verify requestor's identity, cryptographic keys, Diffie-Hellman key exchanges, service location queries, files, etc.) it is desirable to load balance the responses.
Accordingly, there is a need for load balancing the distribution of data among peers in a wireless communication network, such as a mesh network. The load balancing should address the case where there are many hosts for the data, or few hosts for the data.
Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of embodiments of the present invention.
The apparatus and method components have been represented where appropriate by conventional symbols in the drawings, showing only those specific details that are pertinent to understanding the embodiments of the present invention so as not to obscure the disclosure with details that will be readily apparent to those of ordinary skill in the art having the benefit of the description herein.